#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QPushButton>
#include<QWidget>
#include"gamemainfunction.h"
#include<QMouseEvent>
#include<QEvent>

#include <string>

const int BOARD_GARD_SIZE=21;  //棋盘线条数
const int MARGIN=40;  //棋盘距离边缘的距离
const int BLOCK_SIZE=40;  //棋盘格子大小
const int POS_OFFSET=30; //鼠标的有效点击距离
const int MARK_SIZE=11; //落子标记边长
const int CHESS_RADIUS=17; //棋子半径
const int AI_THINKING_TIME=500;  //模拟ai思考时间

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();


    //新建游戏指针
    //（注意：后续一定一定要要在析构函数中delete掉，否则会“.exe crash”、“程序异常退出”）
    GameMainFunction *game;

    //新建一个定时器用来控制AI思考时间，注意，记得delete掉
    QTimer *time1;

    //重写绘图事件
    void paintEvent(QPaintEvent *event);

    //鼠标移动事件，用来监测鼠标位置
    void mouseMoveEvent(QMouseEvent *event);

    //鼠标点击事件，用来执行落子操作
    void mouseReleaseEvent(QMouseEvent *event);

    //创建三个功能按钮：人人，人机，机机，以供切换
    QPushButton pushButton; //人人
    QPushButton pushButton2;  //人机
    QPushButton pushButton3;  //机机

    //禁手开关
    bool banAction;

    //鼠标将点击位置
    int clickPosX, clickPosY;

    //初始化游戏
    void initgame();

    //游戏类型
    char game_type;

    //初始化PVP双人对决
    void init(char type);

    void start_EVE();

    //判断游戏是否结束
    void isEnd();



private slots:
    //人下棋
    void playByPerson();

    //AI下棋
    void playByAI();

    //？？？？
    void flag();

    //三个功能按钮被点击后执行的槽函数
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

signals:
    //写一个自定义的信号，告诉首界面，点击了返回
    void MainWindowBack();
private:
    Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H
